package model;

import view.VistaNave;

public interface Observable {

	
	//Añade un observador a la lista interna de observadores 
	public void addObserver(VistaNave obs );

    //Borra un observador de la lista interna de observadores 
    public void deleteObserver(VistaNave obs );

    //Borra todos los observadores de la lista interna 
    public void deleteObservers();

    //Devuelve el número de observadores en la lista interna 
    public int countObserver();

    //Levanta el flag interno que indica que el Observable ha cambiado de estado 
    void setChanged();
    
  //Baja el flag interno que indica que el Observable ha cambiado de estado 
    void clearChanged();

    
    // Devuelve un valor booleano indicando si el Observable ha cambiado de estado  
    boolean hasChanged();
    
    /*Comprueba el flag interno para ver si el Observable ha cambiado de estado y 
     * lo notifica a todos los observadores 
     */
    public void notifyObservers();
    
    /*Comprueba el flag interno para ver si el Observable ha cambiado de estado y lo 
     *notifica a todos los observadores. Les pasa el objeto especificado en la llamada 
     *para que lo usen los observadores en su método notify().
     */
    public void notifyObservers( Object obj );

    
}
